System for distributing information using a secure peer-to-peer network

ABSTRACT

A secure peer-to-peer network including servers and peer computers that are connected via a network are described. In one aspect of the invention, the reliability of information provided by one peer to another can be verified. One embodiment includes a server connected to a network and a first peer computer connected to the network. In addition, the first peer computer is configured to communicate requests for information to the server, wherein the server is configured to respond to requests for information by providing the identity of at least a second peer computer, wherein the requested information is stored on the second peer computer, wherein the first peer computer is configured to obtain the requested information from the second peer computer and the first peer computer is configured to obtain from the server information to verify the reliability of the information provided by the second peer computer.

CROSS-REFERENCE TO RELATED APPLICATION(S)

This application claims the benefit of U.S. Provisional Patent Application No. 60/522,374, filed Sep. 22, 2004, the contents of which are expressly incorporated herein by reference in its entirety.

BACKGROUND

The present invention relates to the distribution of information over a data network and more specifically the secure distribution of information over a peer network.

Networks such as the Internet can enable rapid communication of information between computers. In many instances, rapid distribution of information to a large number of computers is desirable. For example, when a computer virus is first detected the rapid distribution of information concerning the virus can significantly reduce the number of computers impacted by the virus. Another example is the release of a popular new song, movie, book or video game for download. The automatic rapid distribution of software updates is also desirable.

One method of distributing information is to make the information available on one or more servers that can be accessed by each client computer requiring the information. Server capacity is typically expensive and achieving the rapid distribution of information to all clients can require very large server capacity. In circumstances where the distribution of information to clients is relatively infrequent and/or unpredictable, significant cost can be expended in maintaining idle server capacity.

An alternative to a client/server architecture is the use of a peer-to-peer network. A peer-to-peer network is a system where a computer can act as both a client and a server. When a computer possesses desired information, the computer can act as a server providing the information to other computers and a computer that receives the information acts as a client. Once a computer has received the information, however, it can then become a server capable of distributing the information to other computers. The computers from which a particular computer can obtain information are often referred to as that computer's horizon.

SUMMARY OF THE INVENTION

Embodiments of the present invention include clients and servers that form a secure peer-to-peer network. In several embodiments, peer computers contact the server to obtain a list of other peer computers that possess desired information. When information is downloaded from a peer computer, the reliability of and/or right to use the downloaded information can be verified by a server. In many embodiments, the downloaded information can be encrypted and the verification information can include information enabling the decryption of the downloaded information. In a number of embodiments of the invention, a client that is unable to obtain the information from peer clients can obtain the information directly from a server.

One embodiment of the invention includes a server connected to a network and a first peer computer connected to the network. In addition, the first peer computer is configured to communicate requests for information to the server, the server is configured to respond to requests for information by providing the identity of at least a second peer computer, the requested information is stored on the second peer computer, the first peer computer is configured to obtain the requested information from the second peer computer and the first peer computer is configured to obtain from the server information to verify the reliability of the information provided by the second peer computer.

In a further embodiment, a computer program is installed on at least one of the peer computers and the information received by the peer is information enabling the modification of the computer program.

In another embodiment, the server is configured to provide verification information to a peer computer upon request.

In a still further embodiment, the verification information includes at least one checksum.

In still another embodiment, the information obtained from the second peer computer is encrypted and the verification information enables the decryption of the information obtained from the second peer computer.

In a yet further embodiment, the server is configured to provide verification information to a peer computer possessing the required digital rights upon request.

In yet another embodiment, the server is configured to provide an option to acquire required digital rights to a peer computer requesting verification information, when the peer computer does not possess the required digital rights.

In a further embodiment again, the information includes audio information.

In another embodiment again, the information also includes video information.

A still further embodiment again includes hosted information stored on the server, a list identifying computers, where the list is stored on the server and verification information that is stored on the server. In addition, the list identifying computers identifies a number of computers that acquired the hosted information at some point in the past and the verification information can be derived from the hosted information in accordance with a predetermined algorithm.

In still another further embodiment again, the list identifying computers includes computers that have obtained the verification information from the server.

In a yet further embodiment again, the server is configured to respond to requests for the hosted information by providing the list identifying computers unless the list does not identify any computers.

In yet another embodiment again, the server is configured to provide the verification information upon request.

In a further additional embodiment, the hosted information is subject to digital rights management and the server is configured to provide verification information in response to a request from a device possessing the digital rights required to use the hosted information.

In another additional embodiment, the list identifying computers identifies a maximum of 100 computers.

In a still further additional embodiment, the list identifying computers identifies a maximum of 50 computers.

In still another additional embodiment, the list identifying computers identifies a maximum of 20 computers.

A Yet further additional embodiment includes software. In addition, the software configures the computer to enable it to request information from a server, the software configures the computer to receive peer tables from a server, the software configures the computer to send requests for information to computers listed in a received peer table, the software configures the computer to send requests to a server for verification information relating to information received from other computers and the software configures the computer to verify the reliability of information received from other computers using verification information received from the server.

In yet another additional embodiment, the software configures the computer to request information from the server at least once a week.

In a further additional embodiment again, the software configures the computer to request information from the server at least once a day.

In another additional embodiment again, the software configures the computer to request information from the server at least once every eight hours.

An embodiment of the method of the invention includes contacting a server to request the information, receiving information identifying peer computers possessing the information from the server, contacting the peer computers to request the information, receiving the information, contacting the server for verification information and verifying the reliability of the information.

In a further embodiment of the method of the invention, the information is provided by a peer computer.

In another embodiment of the method of the invention, the information is provided by a server.

A still further embodiment of the method of the invention also includes obtaining the digital rights to use the received information.

BRIEF DESCRIPTION OF THE DRAWINGS

FIG. 1 is a schematic view of a secure peer-to-peer network in accordance with one embodiment of the invention;

FIG. 2 is a flow chart showing a process for distributing information via a secure peer-to-peer network in accordance with an embodiment of the invention;

FIG. 3 is a flow chart showing a process that can be used by a peer computer to obtain information via a secure peer-to-peer network in accordance with an embodiment of the present invention; and

FIG. 4 is a flow chart showing a process that can be used by a server to respond to requests for information from peer computers in accordance with an embodiment of the present invention.

DETAILED DESCRIPTION OF THE INVENTION

Turning now to the drawings, embodiments of the present invention are illustrated that include a network to which at least one server and a number of peer computers are connected. Information can be distributed amongst the peer computers and the reliability of the information can be verified by contacting one of the servers. In many embodiments, a peer contacts a server to ascertain whether desired information is available. If the information is available, the server provides the peer computer with a list of other peer computers that possess the information. Using the list, the peer computer can attempt to download the desired information from on of the peer computers on the list. If none of the peer computers on the list provide the desired information, the server can provide the information directly. The downloaded information can be of any variety including software updates, virus protection system updates, music files, video files, digital books and computer games. The reliability of downloaded information can be verified using information provided by the server.

A secure peer-to-peer network in accordance with the present invention is shown in FIG. 1. The peer-to-peer network 10 includes a number of peer computers 12 and servers 14 connected to each other via a network 16. The peer computers can be almost any networked computing device including personal computers, personal digital assistants, cell phones and networked consumer electronics devices. The servers can also be any computing device and are typically characterized by the ability to service a large number of requests for information. The network can be any type of network including a local area network, a network having wired links, a network having wireless links, a closed network and a networked network such as the Internet.

Each of the peer computers 12 maintains information that enables the peer computer to contact at least one of the servers 14. In one embodiment where communications via the network conform with the TCP/IP protocol, each client computer maintains the IP address of at least one server. In addition, the peer computers 12 are capable of storing a peer table. The peer table includes information enabling communication with other peer computers identified in the peer table.

The servers 14 are configured to communicate with the peer computers via the network. The servers maintain copies of information that is reliably available within the secure peer-to-peer network. The servers can also maintain a peer table in relation to each piece of information stored on the server. A peer computer is listed in the peer table, because it is likely to possess the information with which the peer table is associated. In one embodiment, the peer table is generated using the contact information of the peer computers that most recently requested the information. In several embodiments, the peer table is generated using the contact information of the peer computers that most recently verified the reliability of the information. In other embodiments, other factors can be considered in formulating a peer table including the speed of the internet connection of a peer computer. In addition to a peer table, each piece of information stored on the server can possess associated verification information. In many embodiments, the verification information is information generated using a predetermined algorithm that can reliably verify the accuracy of the stored information. In several embodiments, the verification information also includes information concerning digital rights management (DRM). In numerous embodiments, the DRM information can include a list of people entitled to access the information.

A flow chart showing a method for distributing information across a secure peer-to-peer network in accordance with an embodiment of the invention is shown in FIG. 2. The process 20 commences when information is uploaded onto the server (22). When a peer computer desires the information, the peer computer can contact the server inquiring (24) as to the existence of the information. The server notifies (26) the peer computer that the requested information is available and in several embodiments provides the computer with information indicating other peer computers that have already obtained the information. The peer computer that contacted the server seeking the information can contact the other peer computers and request (28) that the other peer computers provide the information.

The actions of the peer computer seeking the information are then determined (30) based upon whether any of the other peer computers contacted possess the information. In the event that one of the remote peer computers is contactable and possesses the requested information, then the requesting peer computer can obtain (32) the information. The requesting peer computer can then contact the server to verify the reliability of the information (34). In the event that none of the remote peer computers contacted by the requesting peer computer possess the desired information, then the computer can request (34) the information directly from the server. In many embodiments, peer computers that cannot obtain desired information from other peer computers wait a predetermined amount of time before requesting the information directly from the server. In one embodiment, a peer computer waits at least 6 hours. In another embodiment, a peer computer waits at least 1 hour. In a further embodiment, a peer computer waits at least five minutes.

As discussed above, the server 14 can enable a peer computer that has downloaded information to verify that information. In one embodiment the verification process involves obtaining one or more check sums from the server that can be compared with the downloaded information. In another embodiment, the verification information includes information enabling the decryption of the information. In instances where the secure peer-to-peer network includes DRM, then a peer computer that obtains the information may not have the right to use the information. When a peer computer does not have the right to use particular information, then the server can coordinate obtaining the rights. In one embodiment, obtaining rights may involve a financial transaction either between the peer computer and the server, the peer computer and a 3^(rd) party or a 3^(rd) party on behalf of the peer computer and a server or another party. In many embodiments, the server can refuse to provide the peer computer with the information required to verify and/or decrypt the downloaded information.

An embodiment of a process that can be used by a client to obtain information via a secure peer-to-peer network is shown in FIG. 3. The process 40 includes a peer computer requesting (42) a peer table from a server. The peer computer then sets a timer (44) and waits (46) for the server to provide a peer table. In the event that the server does not provide a peer table, then the peer computer can obtain (48) the information directly from the server.

When the server possesses a peer table, it can be downloaded (50) by the peer computer. The downloaded peer table can be used by the peer computer to request (52) the desired information from each peer computer on the peer table. Once a request has been sent, the peer computer's actions are determined (54) based upon whether a remote peer computer is able to provide the information. Following the request, the requesting peer computer sets (56) a timer and waits for a response from any of the remote peer computers. In the absence of a response, the requesting peer computer obtains (54) the information directly from the server. When a remote peer computer can provide the desired information, then it is downloaded (58) by the requesting peer computer and verified using information provided by the server.

As discussed above, a peer table is used to identify remote peer computers that are likely to possess desired information. In one embodiment, the peer table is limited to a small number of peers (e.g. 20) and the peer table does not include peers that are located behind a firewall. A peer table can be arbitrarily large or small and in many embodiments the size is determined based upon the maximum amount of a peer computer's resources that it is desirable to consume with servicing download requests. In one embodiment, the peer table includes a maximum of 100 peer computers. In another embodiment, the peer table includes a maximum of 50 peer computers. In embodiments where connections with peer computers behind firewalls are possible (e.g. using a mediated connection), peer computers that are located behind firewalls are included in peer tables. Once a peer computer has obtained a peer table from the server, the peer is added to the peer table and one peer is dropped from the peer table. In one embodiment, a FIFO process is used to select the peer computer that is dropped from the peer table and peer computers that are behind firewalls are not added to the peer table. In other embodiments, any variety of criteria can be used to select the peer computers that remain within the peer table including the bandwidth of the peer's connection to the network.

In embodiments where the desired information is updated either regularly or irregularly, then a peer computer can be configured to contact a server periodically to ascertain whether a new update is available. As will be readily appreciated a peer computer can be configured to request updated information from a server in accordance with almost any conceivable set of rules relating to the timing of the request. In one embodiment, the peer computer is configured to contact the server at least once a week. In another embodiment, the peer computer is configured to contact the server at least once a day. In a further embodiment, the peer computer is configured to contact the server at least once every eight hours. In other embodiments, the peer computer contacts the server as infrequently as at least once a month or as frequently as at least once every four hours. In many embodiments, a peer computer can check for new information in response to a periodic events such as computer start up or reset. In addition, peer computers can be configured to receive an instruction from a user to obtain an update. In further embodiments, a peer computer can seek information from a server in response to notification that the information is available. In one embodiment, notification can be provided by a server or another peer computer. In embodiments where the peer computer needs the information immediately, the peer computer can contact the server to check whether the information is available. In embodiments where the server provides updates to a virus protection system this online checking can be used to provide information concerning new viruses to peer computers at the time that it is required. In many embodiments online checking is supplemented with periodic checking.

A process that can be used by a server to coordinate the distribution of information via a secure peer-to-peer network is shown in FIG. 4. The process (70) commences when information is made available (72) on the server. Making information available on a server can often involve encrypting the information. Once the information is available, the server can receive (74) a first request for the information from a peer computer. As the information is not available elsewhere, the information is provided (76) to the peer computer directly by the server. When subsequent requests for information are received (78), the server determines (80) whether the information requested is verification information. If the request is another request for the stored information (i.e. not a request for verification), then the server determines (82) whether the peer computer requesting the information is requesting the information for the first time. If the information is being requested for the first time, the server can provide (84) the peer computer with a copy of the peer table relating to the information. In several embodiments, the server does not provide a peer table unless the peer table is full. Enabling direct download until a peer table is full can speed the initial secure distribution of the information. If no peer table is available or the server has requested the information before, then the server provides (78) the information directly to the requesting peer computer.

When the server receives a request for verification information, the server can determine (86) whether the peer computer requesting the verification information possesses the necessary digital rights to utilize the information. If the peer computer possesses the necessary digital rights, then the sever provides (88) the peer computer with the verification information and the peer computer is added to the peer table relating to the downloaded information. When the requesting computer does not possess the rights, then the server can facilitate obtaining the rights or deny (90) verification information to the peer computer. Although the process described above involves use of verification information and DRM information, not all information provided by the server need have verification information and DRM information associated with it. In many embodiments, the server facilitates the distribution of information that has both verification information and DRM information associated with it and information that does not have verification information and/or DRM information associated with it.

While the above description contains many specific embodiments of the invention, these should not be construed as limitations on the scope of the invention, but rather as an example of one embodiment thereof. For example, secure peer-to-peer networks in accordance with embodiments of the invention can enable the communication of both secure and unsecured information. In addition, separate servers can be used for one or all of storing information, encrypting information, storing verification information, storing DRM information, storing peer tables and handling requests from peer computers. Furthermore, all or some of the communications described above between a peer computer and servers and between a first peer computer and a second peer computer can be conducted using an encryption technique such as public key/private key encryption. Accordingly, the scope of the invention should be determined not by the embodiments illustrated, but by the appended claims and their equivalents. 

1. A secure peer-to-peer network, comprising: a server connected to a network; a first peer computer connected to the network; wherein the first peer computer is configured to communicate requests for information to the server; wherein the server is configured to respond to requests for information by providing the identity of at least a second peer computer; wherein the requested information is stored on the second peer computer; and wherein the first peer computer is configured to obtain the requested information from the second peer computer; wherein the first peer computer is configured to obtain from the server information to verify the reliability of the information provided by the second peer computer.
 2. The secure peer-to-peer network of claim 1, wherein: a computer program is installed on at least one of the peer computers; and the information received by the peer is information enabling the modification of the computer program.
 3. The secure peer-to-peer network of claim 1, wherein the server is configured to provide verification information to a peer computer upon request.
 4. The secure peer-to-peer network of claim 3, wherein the verification information includes at least one checksum.
 5. The secure peer-to-peer network of claim 3, wherein: the information obtained from the second peer computer is encrypted; and the verification information enables the decryption of the information obtained from the second peer computer.
 6. The secure peer-to-peer network of claim 1, wherein the server is configured to provide verification information to a peer computer possessing the required digital rights upon request.
 7. The secure peer-to-peer network of claim 6, wherein the server is configured to provide an option to acquire required digital rights to a peer computer requesting verification information, when the peer computer does not possess the required digital rights.
 8. The secure peer-to-peer network of claim 7, wherein the information includes audio information.
 9. The secure peer-to-peer network of claim 8, wherein the information also includes video information.
 10. A server, comprising: hosted information stored on the server; a list identifying computers, where the list is stored on the server; and verification information stored on the server; wherein the list identifying computers identifies a number of computers that acquired the hosted information at some point in the past; wherein the verification information can be derived from the hosted information in accordance with a predetermined algorithm.
 11. The server of claim 10, wherein the list identifying computers includes computers that have obtained the verification information from the server.
 12. The server of claim 10, wherein the server is configured to respond to requests for the hosted information by providing the list identifying computers unless the list does not identify any computers.
 13. The server of claim 10, wherein the server is configured to provide the verification information upon request.
 14. The server of claim 10, wherein: the hosted information is subject to digital rights management; and the server is configured to provide verification information in response to a request from a device possessing the digital rights required to use the hosted information.
 15. The server of claim 10, wherein the list identifying computers identifies a maximum of 100 computers.
 16. The server of claim 15, wherein the list identifying computers identifies a maximum of 50 computers.
 17. The server of claim 16, wherein the list identifying computers identifies a maximum of 20 computers.
 18. A computer configured to obtain information, comprising: software; wherein the software configures the computer to enable it to request information from a server; wherein the software configures the computer to receive peer tables from a server; wherein the software configures the computer to send requests for information to computers listed in a received peer table; wherein the software configures the computer to send requests to a server for verification information relating to information received from other computers; wherein the software configures the computer to verify the reliability of information received from other computers using verification information received from the server.
 19. The computer of claim 18, wherein the software configures the computer to request information from the server at least once a week.
 20. The computer of claim 19, wherein the software configures the computer to request information from the server at least once a day.
 21. The computer of claim 20, wherein the software configures the computer to request information from the server at least once every eight hours.
 22. A method of obtaining information comprising: contacting a server to request the information; receiving information identifying peer computers possessing the information from the server; contacting the peer computers to request the information; receiving the information; contacting the server for verification information; and verifying the reliability of the information.
 23. The method of claim 22, wherein the information is provided by a peer computer.
 24. The method of claim 22, wherein the information is provided by a server.
 25. The method of claim 22, further comprising obtaining the digital rights to use the received information. 